<?xml version="1.0" ?>
<node name="/cx.ring.Ring.VideoManager" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
    <interface name="cx.ring.Ring.VideoManager">
        <!-- Video device methods -->

        <method name="getDeviceList" tp:name-for-bindings="getDeviceList">
            <tp:docstring>Returns a list of the detected v4l2 devices</tp:docstring>
            <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="VectorString"/>
            <arg type="as" name="list" direction="out">
            </arg>
        </method>

        <method name="getCapabilities" tp:name-for-bindings="getCapabilities">
           <tp:docstring>Returns a map of map of array of strings, containing the capabilities (channel, size, rate) of a device</tp:docstring>
            <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="MapStringMapStringVectorString"/>
            <arg type="s" name="name" direction="in">
            </arg>
            <arg type="a{sa{sas}}" name="cap" direction="out">
            </arg>
        </method>

        <method name="getSettings" tp:name-for-bindings="getSettings">
           <tp:docstring>Returns a map of settings for the given device name</tp:docstring>
            <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="MapStringString"/>
            <arg type="s" name="device" direction="in">
            </arg>
            <arg type="a{ss}" name="map" direction="out">
            </arg>
        </method>

        <method name="applySettings" tp:name-for-bindings="applySettings">
            <tp:docstring>Set the preferred settings for a given device name</tp:docstring>
            <arg type="s" name="name" direction="in">
            </arg>
            <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="MapStringString"/>
            <arg type="a{ss}" name="settings" direction="in">
            </arg>
        </method>

        <method name="getDefaultDevice" tp:name-for-bindings="getDefaultDevice">
            <arg type="s" name="name" direction="out">
            </arg>
        </method>

        <method name="setDefaultDevice" tp:name-for-bindings="setDefaultDevice">
            <arg type="s" name="name" direction="in">
            </arg>
        </method>

        <method name="startCamera" tp:name-for-bindings="startCamera">
            <tp:docstring> Starts the video camera, which renders the active v4l2 device's video to shared memory. Useful for testing/debugging camera settings</tp:docstring>
        </method>

        <method name="stopCamera" tp:name-for-bindings="stopCamera">
        </method>

        <method name="switchInput" tp:name-for-bindings="switchInput">
            <arg type="s" name="resource" direction="in">
                <tp:docstring>
                    A media resource locator (MRL).
                    Currently, the following are supported:
                    <ul>
                        <li>camera://DEVICE</li>
                        <li>display://DISPLAY_NAME[ WIDTHxHEIGHT]</li>
                        <li>file://IMAGE_PATH</li>
                    </ul>
                </tp:docstring>
            </arg>
            <arg type="b" name="switched" direction="out">
                <tp:docstring>Returns true if the input stream was successfully changed, false otherwise</tp:docstring>
            </arg>
        </method>

        <method name="hasCameraStarted" tp:name-for-bindings="hasCameraStarted">
            <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="Bool"/>
            <arg type="b" name="started" direction="out">
            <tp:docstring>Returns true if the camera has already started, false otherwise</tp:docstring>
            </arg>
        </method>

        <signal name="deviceEvent" tp:name-for-bindings="deviceEvent">
           <tp:docstring>Signal triggered by changes in the detected v4l2 devices, e.g. a camera being unplugged.</tp:docstring>
        </signal>

        <signal name="startedDecoding" tp:name-for-bindings="startedDecoding">
            <tp:docstring>Signal triggered when video is available in a shared memory buffer.</tp:docstring>
            <arg type="s" name="id">
              <tp:docstring>The ID of the call associated with the video, or "local" in the case of local video</tp:docstring>
            </arg>
            <arg type="s" name="shmPath">
              <tp:docstring>The path of the newly created shared memory</tp:docstring>
            </arg>
            <arg type="i" name="width">
              <tp:docstring>The width of the video in the shared memory</tp:docstring>
            </arg>
            <arg type="i" name="height">
              <tp:docstring>The height of the video in the shared memory</tp:docstring>
            </arg>
            <arg type="b" name="isMixer">
              <tp:docstring>Whether or not this texture belongs to a video mixer or is a single texture</tp:docstring>
            </arg>
        </signal>

        <signal name="stoppedDecoding" tp:name-for-bindings="stoppedDecoding">
            <tp:docstring>Signal triggered when video is no longer available in a shared memory buffer.</tp:docstring>
            <arg type="s" name="id">
              <tp:docstring>The ID of the call associated with the video, or "local" in the case of local video</tp:docstring>
            </arg>
            <arg type="s" name="shmPath">
              <tp:docstring>The path of the newly created shared memory</tp:docstring>
            </arg>
            <arg type="b" name="isMixer">
              <tp:docstring>Whether or not this texture belongs to a video mixer or is a single texture</tp:docstring>
            </arg>
        </signal>

    </interface>
</node>
